"""
之前我们说过, 类可以根据传入的参数来生产出对象

所以自然也就有 属性 来进行区分到底能够生产出来怎么样的对象.

类属性分为三种:

公共属性, 也叫 静态属性, 每个通过类生产出来的对象的公共属性都是一样的
实例属性, 每个通过类生产出来的对象的实例属性都有可能是不同的
私有属性, 这个属性只能在 类方法 中使用
"""

# 公共属性（静态属性）

# class Car():
#     brand = "BMW"
#
# car1 = Car()
# car2 = Car()
#
# print(car1.brand)
# print(car2.brand)

## 更换类的公共属性

# class Car():
#     brand = "BMW"
#
# car1 = Car()
# car2 = Car()
#
# print(car1.brand) # BMW
# print(car2.brand) # BMW
#
# car1.brand = "Benz"
# print(car1.brand) # Benz
# print(Car.brand) # BMW
#
# Car.brand = "Quattro"
#
# car3 = Car()
#
# print(Car.brand)  # Quattro
# print(car3.brand)  # Quattro

# 实例属性
"""
在定义类的具体某个方法(函数)中直接使用 self.xxx = xxx 这种方式等我们学习了 类方法 后再说明
直接对象.xxx = xxx
"""

# class Car():
#     brand = "BMW"
#     height = 1400
#     width = 4000
#
#
# car1 = Car()
# car2 = Car()
#
#
# car1.color = "blue"
# car2.color = "red"
#
# print(car1.color)  # blue
# print(car2.color)  # red

# 值得注意的是, 公共属性 在实例化出来一个对象之后, 都会变成这个对象的 实例属性

# class Car():
#     brand = "BMW"
#     height = 1400
#     width = 4000
#
#
# car1 = Car()
# car2 = Car()
#
# car1.height = 1000
# print(car1.height)  # 1000
# print(car2.height)  # 1400

# 私有属性

"""
私有属性只能在 类定义的方法中使用
私有属性就是 私有化, 外部不可见, 想要使用只能通过类特定的方法来获取.
其目的就是保护某些敏感数据.
假设这个 私有属性 是一个极其敏感的密码字符串
你必须要通过这个方法的身份校验才可以获取到.
"""

class Password():
    __password = "123456"  # 双下划线开头

    password = '123'

    def getPassword(self, name):
        if name == "muzhou":
            return self.__password
        else:
            return "身份校验失败, 无法获取"


password = Password()

# print(password.__password)  # 无法直接获取, 会报错
print(password.getPassword("mz"))
print(password.getPassword("muzhou"))
